1. Field of the Invention
The present invention relates to digital signal processing. In particular, the present invention relates to arbitrary-ratio signal resampling techniques in digital signal processing.
2. Discussion of the Related Art
Arbitrary-ratio signal resampling refers to the process which computes sample values of a signal, as if it is sampled at a given rate, using values of that signal sampled originally at a different rate. The original signal is assumed to be bandlimited to one half of the original sampling rate, thereby permitting, as per the well-known Nyquist sampling theorem, unique recovery (i.e. the avoidance of aliasing) of the signal for all time from the original samples.
Arbitrary-ratio signal resampling techniques can be applied, for example, in an audio processing system, in which an input stream is received at a constant sampling rate, and an output stream is required to be generated in real time at a different constant sampling rate. In one application, a pre-recorded digital audio stream originally sampled at a given sampling rate is played back at a different sampling rate dictated by the play-back system. In another application, to mix an audio signal stored in one medium (e.g. digital audio tapes which can be sampled at 32, 44.1 or 48 KHz) with an audio signal from a different source (e.g. a compact disk, which is sampled at 44.1 KHz), arbitrary-ratio resampling techniques must be applied.
Arbitrary-ratio signal resampling techniques can also be applied to create a constant rate output stream from a sound recording being played back at a specific different sampling rate to create such special effects as Doppler shifting and pitch shifting. Pitch shifting is a technique used in sampling wave table music synthesis. Doppler shifting is a technique used in creating such sound effects as a moving sound source.
Further, arbitrary-ratio resampling techniques can also be applied to create a constant sampling rate output stream from a source which sampling rate is either not precisely known in advance, or which may drift. In such application, the sampling ratio must be adjusted in real-time to keep the input and output streams synchronized. This synchronization is called asynchronous resampling, and is used where digital audio sources are produced using independent clocks, as often arises in digital audio mixing consoles and digital stereos. Manufacturing process variations, temperature differences, and power supply variations can all cause identical clock generation circuits to oscillate at slightly different frequencies. In some situations, it may not be feasible to use a single master clock to be a time base for an entire digital audio network, such as when one digital source is a transmitting satellite, and the receiver receiving the signal is on the ground.
One view of the resampling process is provided by the so-called "analog interpretation" as discussed in the text of Crochiere and Rabiner (Multirate Digital Signal Processing, Prentice-Hall Inc., Englewood Cliffs, N.J., 1983). This view is depicted in FIG. 1.
Referring to FIG. 1, an analog signal x(t), assumed bandlimited to a frequency range of 0.5/T.sub.s, is sampled at intervals of T.sub.s to result in a discrete time series xn!, where xn! is the sampled value of x(t) at t=nT.sub.s, for integer values of n. The discrete time series can be represented by continuous-time signal 1, which can be expressed as: ##EQU1##
As shown in FIG. 1, signal x(t) passes through an analog low-pass filter 2, which is defined by an impulse response function h(t). The output signal of filter 2 is a signal 3, x(t) which is equal to the convolution of h(t) and x(t), expressed as ##EQU2## In theory, filter 2 can be provided by an ideal low-pass filter with a cutoff frequency of 0.5/T.sub.s, i.e. a filter having an impulse function response of ##EQU3##
The ideal low-pass filter has a perfect "brick wall" frequency response and would provide for ideal signal reconstruction. However, in a practical implementation in which only finite number of terms can be computed, x(t) is typically approximated using a windowed sinc function. Such a windowed since function can be provided by a Hanning or a Kaiser window, for example. An example of an impulse response function, h(t), that is non-zero over a finite range is illustrated by FIG. 3. In FIG. 3, h(t) is zero outside of the range of -3,3! (in units of T.sub.s)
Resampling is achieved by sampling signal x(t) according to the resampling ratio r=M/N (M and N being relatively prime integers), which is the ratio of the original sampling rate to the new sampling rate. Referring back to FIG. 1, signal x(t) is shown to be provided to a sampling circuit ("sampler") 4, together with the ratio r (indicated in FIG. 1 by reference numeral 5) to provide an output resampled signal x(t), indicated in FIG. 1 by signal 6, given by: ##EQU4##
If the ratio r is less than 1, aliasing will not occur. In this case h(t) may be chosen to be a windowed sinc function with a scaling factor of 1/T.sub.s, i.e. ##EQU5## where w(t) is the windowing function used. To resample the signal xn! at the new sampling rate it suffices to store values of h(t) at times t=T.sub.0, T.sub.0 +T.sub.s /N, T.sub.0 +2T.sub.s /N, . . . , T.sub.0 +T where T.sub.0, T.sub.0 +T! is the interval outside of which h(t) is zero. Hence, to achieve this resampling, NT/T.sub.s filter coefficients (i.e. values of the filter's impulse response) must be stored.
For example, if M/N=3/4 and h(t) is the impulse response function of FIG. 3, then values for h(t) would need to be stored for all the original sampling times in the non-zero finite range for h(t) (shown in FIG. 3 as points on the time line marked by a dot) and for the three equally spaced points between these original sampling times (marked in FIG. 3 by an "x" on the time line).
Thus, given a resampling ratio r less than 1, the total number of filter coefficients required to be stored is NT/T.sub.s, where T is the duration ("support") of the finite time range for which h(t) is non-zero (e.g. NT/T.sub.s =24 for the impulse response of FIG. 3). Clearly, the total number of filter coefficients can become impractically large for a large N.
On the other hand, if the resampling ratio is greater than 1, aliasing can be avoided by applying a low pass filter with an impulse response of h'(t)=bh(bt), where h(t) is as defined above and b.ltoreq.N/M. The resulting bandwidth of h'(t) is proportional to b.
Noting that for the minimally attenuated case, b=N/M, the support of h' (t) is T'=T/b=MT/N time units long. In this case, the number of sampling points of h' (t) that need to be stored is N.multidot.T'/T.sub.s =MT/T.sub.s, so that the number of stored filter coefficients is proportional to M. In general, the number of samples of h(t) needed is T/T.sub.s max(N,M). Clearly, the total number of coefficients can become impractically large for large M or N.
Storing these filter coefficients for resampling under a given a resampling ratio is the approach taken by "polyphase" filters. Each group of stored filter coefficients corresponds to one phase filter of a "polyphase" filter. Typically, only one phase is required to provide a resampled output sample at a particular resampling time.
For example, given the impulse response, h(t), of FIG. 3, one required phase filter for resampling at a rate 4/3 the rate of the original sampling would consist of values for h(-9/4), h(-5/4), h(-1/4), h(3/4), h(7/4) and h(11/4), i.e. values for h(t) at time instants 31 of FIG. 3. Application of equation (2) reveals that only this phase filter is required for the calculation of x(3T.sub.s /4) i.e. a sample at the resampling time of t=3T.sub.s /4. On the other hand, the determination of x(3T.sub.s /2) i.e. a sample at the resampling time of t=3T.sub.s /2, according to equation (2), requires another phase filter, namely the one consisting of values for h(-5/2), h(-3/2), h(-1/2), h(1/2), h(3/2) and h(5/2), i.e. values for h(t) at time instants 32 of FIG. 3.
Polyphase filters are described at length in Vaidyanathan (Multirate Systems and filter banks, Englewood Cliffs, N.J.: Prentice-Hall 1993) and in Rabiner and Crochiere, which is referenced above. Depending on the resampling ratio, the basic polyphase filter technique can lead to an impractically large number of stored filter coefficients. Another important shortcoming of the polyphase filter approach arises from the requirement that the resampling ratios implemented in the filter must be ratios of integers. Consequently, the polyphase filter cannot accommodate situations where the resampling ratio varies over time.
An article ("Smith") by Smith and Gossett, entitled "A flexible sampling-rate conversion method", Proc. ICASSP, pp. 19.4.1-19.4.4, 1984, describes a technique that permits resampling at arbitrary times. As in the polyphase filter technique described above, Smith stores in a table samples of the impulse response of a low-pass filter. However, Smith permits values of the impulse response function to be determined at arbitrary times (and hence resampling at arbitrary times) by interpolating between values stored in the table. Smith shows that the number of stored values of the impulse response per original sampling time is approximately: ##EQU6## where n.sub.c is the number of significant bits desired for each stored value. Even then, Smith's approach still results in a storing a large number of samples of the impulse response.
An article ("Adams") by Adams and Kwan, entitled "Theory and VLSI architectures for asynchronous sample--rate converters", J. Audio Engineering Society, vol. 41, July/August 1993, p. 550, describes a similar strategy in a VLSI implementation. In particular, using linear interpolation and storing only every 128th point of a filter that is oversampled by a factor of 2.sup.16 (i.e. having 2.sup.16 coefficients per original sampling period), Adams was able to reduce the filter coefficient ROM table size from 40 megawords to 32K words.
Recently, an article ("Zolzer") by Zolzer and Boltze, entitled "Interpolation algorithms: Theory and application", 97th Audio Engineering Society Convention, Preprint No. 3398, Nov. 1994, describes calculating filter coefficients for resampling in real-time. Zolzer discusses resampling techniques based on polynomial, Lagrange, and spline interpolations. Each of the approaches described in Zolzer involves first calculating an oversampled input sequence, using a standard polyphase filter technique. This first step is then followed by interpolation (either polynomial, Lagrange or spline) among samples of the oversampled input sequence to determine resampling outputs at the desired times.
Zolzer's approach results, for an N.sup.th order interpolation, in a frequency response which is approximated by the function sinc.sup.N+1 (t) (except in the spline case, where it is exact), instead of the sinc frequency response associated with ideal bandlimited interpolation. To compensate for the non-ideal frequency response, Zolzer's resampled output sequence is filtered by a compensation filter using calculated coefficients. However, some distortion in the frequency domain remains (Zolzer's FIG. 13).